package com.hu.demo1.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.StringRedisSerializer;

@Configuration
public class RedisConfig {

    @Bean // 这个方法会自动执行一次然后将方法的返回值放入spring中进行管理
    public RedisTemplate<String,Object> redisTemplate(RedisConnectionFactory redisConnectionFactory){
        RedisTemplate<String,Object> redisTemplate = new RedisTemplate<>();
        redisTemplate.setConnectionFactory(redisConnectionFactory);
        // 默认情况下是以字节码数组存放到redis，这样可能会导致看不懂，我们需要转换一下
        // 如果就以这种方式进行保存，默认以字节码数组的方式存入redis ，存进去的东西看不懂 所以需要转换一下

        // value 序列化
        redisTemplate.setValueSerializer(new StringRedisSerializer());
        // key序列化
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        //Hash序列化
        redisTemplate.setHashKeySerializer(new StringRedisSerializer());
        redisTemplate.setHashValueSerializer(new StringRedisSerializer());
        redisTemplate.afterPropertiesSet();
        return redisTemplate;
    }
}
